<?php

require_once 'SecurityController.php';

class UsuariosGranjaController extends SecurityController
{

    public function init()
    {
        parent::init();
        $this->checkAction(SecurityController::ROL_SHOW_USERS);
    }

    public function indexAction()
    {
        //TODO show all user if current user is 'admin'
    }

    /**
     * verify if correo exists in usuario table
     * get usuario's id by correo, if dosen't exists create,
     * verify if exists a relation bettewen usuario and current granja. if dosen't
     * exists create
     *
     *
     */
    public function formAction()
    {
        $request = $this->getRequest();

        //TODO validate id granja
        $id_granja = $request->getParam('granja');
        $form = new Application_Form_UsuarioGranja($id_granja);

        if ($request->isPost()) {
            if ($form->isValid($request->getPost())) {
                $email = $form->getValue("correo");
                $mapper = new Application_Model_UsuarioMapper();
                $user = $mapper->findByCorreo($email);
                if ($user != null) {
                    $id_usuario = $user->getId();
                } else {
                    $user = new Application_Model_Usuario();
                    $user->setCorreo($email);
                    $id_usuario = $mapper->save($user);
                }
                $mapper = new Application_Model_UsuarioGranjaMapper();
                $usuario_granja = $mapper->findByUsuarioAndGranja($id_usuario, $id_granja);
                if (count($usuario_granja) > 0) {
                    $this->flashMessage("Ya existe una invitacion para ese correo", false);
                } else {
                    $usuarios_granja = new Application_Model_UsuarioGranja();
                    $usuarios_granja->setGranjaId($id_granja);
                    $usuarios_granja->setUsuarioId($id_usuario);
                    $mapper->save($usuarios_granja);
                    $this->flashMessage("Se agrego la invitacion para el usuario");
                }
            }
            $this->_redirect('/usuarios-granja/usuarios/id/' . $id_granja);
        } else {
            $this->view->form = $form;


        }
    }

    public function removeAction()
    {
        $request = $this->getRequest();
        $mapper = new Application_Model_UsuarioGranjaMapper();
        $id_granja = $request->getParam("granja");
        $id_usuario = $request->getParam("usuario");
        $mapper->delete($id_granja, $id_usuario);
    }

    public function usuariosAction()
    {
//        TODO validate id granja
        $id_granja = $this->getRequest()->getParam('id');

        $mapper = new Application_Model_GranjaMapper();
        $granja = $mapper->find($id_granja);

        $mapper = new Application_Model_UsuarioGranjaMapper();

        $this->view->granja = $granja;
        $this->view->entries = $mapper->fetchByGranja($id_granja);

    }

    public function granjasAction()
    {
        //        TODO validate id granja
        $id_usuario = $this->getRequest()->getParam('id');

        $mapper = new Application_Model_UsuarioMapper();
        $usuario = $mapper->find($id_usuario);

        $mapper = new Application_Model_UsuarioGranjaMapper();

        $this->view->usuario = $usuario;
        $this->view->entries = $mapper->fetchByUsuario($id_usuario);
    }

    public function removeUsuarioAction()
    {
        $this->removeAction();
        $this->_redirect("/usuarios-granja/usuarios/id/".$this->getRequest()->getParam("granja"));
    }

    public function removeGranjaAction()
    {
        $this->removeAction();
        $this->_redirect("/usuarios-granja/granjas/id/".$this->getRequest()->getParam("usuario"));
    }

}











